﻿using app.Common;
using HLVControl.Grid;
using HLVControl.Grid.Data;
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Data.EntityClient;
using System.Data.Objects.SqlClient;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace eService.BLL
{
    //EMPLOYEE
    public class ExcuteNHANVIEN
    {
        eServiceEntities dbEntities;
        IExecuteData<EMPLOYEE> Execute;
        public string ErrMsg { get; set; }
        public bool KQ { get; set; }

        public ExcuteNHANVIEN()
        {
            dbEntities = ConnectionProvider.getDbEntities();
            Execute = new ExecuteData<EMPLOYEE>(dbEntities);
        }
        public List<EMPLOYEE> GetAll()
        {
            List<EMPLOYEE> list = (List<EMPLOYEE>)Execute.GetAll().ToList(); 
            if (list != null && list.Count > 0) KQ = true;
            return list;
        }
        public EMPLOYEE GetByID(string ID)
        {
            EMPLOYEE u = Execute.GetById(ID);
            if (u != null) KQ = true;
            return u;
        }
        public bool Add(EMPLOYEE Newobj)
        {
            KQ = false;
            if (Newobj != null)
            {
                KQ = Execute.Insert(Newobj);
                if (KQ)
                    ErrMsg = "Thêm nhân viên mới thành công!";
                else
                    ErrMsg = "Không thể thêm nhân viên mới!";
            }
            else
            {
                ErrMsg = "Vui lòng nhập thông tin đầy đủ!";
            }
            return KQ;
        }
        public bool UpDate(EMPLOYEE obj)
        {
            KQ = false;
            if (obj != null)
            {
                EMPLOYEE obj1 = dbEntities.EMPLOYEEs.Find(obj.EmpID);
                if (obj1 != null)
                {
                    KQ = Execute.Update(obj,obj1);
                    if (KQ)
                        ErrMsg = "Cập nhật nhân viên thành công!";
                    else
                        ErrMsg = "Không thể cập nhật nhân viên !";
                }
            }
            else
            {
                ErrMsg = "Vui lòng chọn nhân viên !";
            }
            return KQ;
        }
        public bool Delete(EMPLOYEE obj)
        {
            KQ = false;
            if (obj != null)
            {
                EMPLOYEE obj1 = dbEntities.EMPLOYEEs.Find(obj.EmpID);
                if (obj1 != null)
                {
                    KQ = Execute.Delete(obj1);
                    if (KQ)
                        ErrMsg = "xoá nhân viên thành công!";
                    else
                        ErrMsg = "Không thể xoá nhân viên !";
                }
            }
            else
            {
                ErrMsg = "Vui lòng chọn nhân viên !";
            }
            return KQ;
        }
        public EMPLOYEE LoadValues(string Ma,string Ten,DateTime NgaySinh,string MaNhom,string DCThuongTru,string DCTamTru,string CMND,string Email,string DienThoai,short SuDung,string GhiChu,int EmpCount)
        {
            KQ = false;
            EMPLOYEE obj = new EMPLOYEE();

                if (Ten != "" && MaNhom!="")
                {
                    obj.EmpID = Ma;
                    obj.EmpAddress = DCThuongTru;
                    obj.EmpCount = EmpCount;
                    obj.EmpDate = NgaySinh;
                    obj.EmpEmail = Email;
                    obj.EmpIdCard = CMND;
                    obj.EmpName = Ten;
                    obj.EmpNotes = GhiChu;
                    obj.EmpPhone = DienThoai;
                    obj.EmpResident = DCTamTru;
                    obj.EmpStatus = SuDung;
                    obj.GeID = MaNhom;
                    KQ = true;
                }
                else
                {
                    obj = null;
                    ErrMsg = "Vui lòng điền đầy đủ thông tin nhân viên!";
                }
            
            return obj;
        }

        public DataTable ToDataTable(List<EMPLOYEE> list)
        {
            DataTable dtData = Execute.ToDataTable<EMPLOYEE>(list);
            return dtData;
        }
        public bool LoadToTreeview(TreeListView treeview, List<EMPLOYEE> list)
        {
            KQ = false;
            ExcuteNHOMNHANVIEN exeNhom = new ExcuteNHOMNHANVIEN();
            treeview.Rows.Clear();
            int count = 1;
            foreach (EMPLOYEE obj in list)
            {
                TreeListRow row = treeview.CreateRow();
                row.Cells.Add(new TreeListCell(count));
                row.Cells.Add(new TreeListCell(obj.EmpID));
                row.Cells.Add(new TreeListCell(obj.GeID));
                row.Cells.Add(new TreeListCell(obj.EmpName));
                GROUPEMPLOYEE objG = exeNhom.GetByID((string)obj.GeID);
                if (objG != null) row.Cells.Add(new TreeListCell(objG.GeName));

                row.Cells.Add(new TreeListCell(obj.EmpDate));
                row.Cells.Add(new TreeListCell(obj.EmpIdCard));
                row.Cells.Add(new TreeListCell(obj.EmpAddress));
                row.Cells.Add(new TreeListCell(obj.EmpResident));
                row.Cells.Add(new TreeListCell(obj.EmpPhone));
                row.Cells.Add(new TreeListCell(obj.EmpEmail));
                //row.Cells.Add(new TreeListCell(obj.EmpCount));
                row.Cells.Add(new TreeListCell(obj.EmpNotes));

                treeview.Rows.Add(row);
                count++;
                KQ = true;
            }
            treeview.Refresh();
            if (!KQ)
                ErrMsg = "Không thể tải nhân viên!";
            return KQ;
        }
    }
}

